In a computer network, a networking switch receives a data packet at an ingress port connected to the switch and forwards the data packet to an egress port connected to the switch. The switch determines the egress port to which the data packet is forwarded dependent on a destination address included in the data packet received at the ingress port.
A destination node connected to an egress port may be a member of an IP Multicast group. A destination node joins an IP Multicast group in order to receive IP Multicast data such as a real-time video. A switch receiving an IP Multicast data packet at an ingress port must forward a copy of the received IP Multicast data packet to all members of the IP Multicast Group connected to the switch.
By transmitting one IP Multicast data packet to the ingress port instead of multiple unicast data packets, one for each member of the IP Multicast group, the number of data packets transmitted to the switch is reduced. However, the time to process the IP Multicast data packet in the switch is increased because the switch must determine to which egress ports the IP Multicast data packet is to be forwarded, and the number of copies to forward to each egress port.
The switch must forward a copy of the IP Multicast data packet to each member of the IP Multicast group. Thus, multiple copies of the IP Multicast data packet are forwarded to an egress port if multiple members of the IP Multicast group are connected to the egress port. A copy of the IP Multicast data packet is modified by the networking switch before being forwarded to a member of the IP Multicast group.
Typically, the forwarding of an IP Multicast data packet through a switch to an egress port, is performed by a host processor in the networking switch. Host processor based forwarding is slow.
A copy of an IP Multicast data packet received at an ingress port of a networking switch is forwarded at wire speed to an egress port. The IP Multicast data packet received at the ingress port is stored in memory. A copy of the stored IP Multicast data packet is forwarded to egress port forwarding logic. The egress port forwarding logic includes a modification entry for each member of the IP Multicast group associated with the IP Multicast data packet. Upon receiving a copy of an IP Multicast data packet from memory, the egress port forwarding logic modifies the copy of the IP Multicast data packet dependent on a modification entry associated with the egress port to which the IP Multicast data packet is to be forwarded.
Ingress port forwarding logic in the switch generates a multicast forward vector for the IP Multicast data packet. The Multicast forward vector indicates to which port the stored IP Multicast data packet is to be forwarded.
Port queue logic in the switch stores a pointer to the location of the IP Multicast data packet in memory on a port queue dependent on the multicast forward vector. The port queue logic removes the pointer after the IP Multicast data packet has been forwarded to all members of the IP Multicast group connected to the egress port associated with the port queue.
The modification entry may include an identification for a Virtual LAN, a pointer to a next modification entry, a tag indicator and a forward type entry. The pointer to a next modification entry is an index to a next modification entry for modifying the next IP Multicast data packet for the port.
The egress port forwarding logic may include a Virtual LAN identification table and an intermediate LAN identification table. The intermediate LAN identification table includes an index to a location in the virtual LAN table and the internal LAN table stores a Virtual LAN identification.